package fr.efrei.musicpliz.web.controller;

import java.io.Serializable;

import javax.persistence.Transient;

import org.springframework.security.core.context.SecurityContextHolder;

import fr.efrei.musicpliz.dto.CompteDto;
import fr.efrei.musicpliz.entity.Compte;
import fr.efrei.musicpliz.enums.CompteTypeEnum;
import fr.efrei.musicpliz.service.CompteService;
import fr.efrei.musicpliz.web.util.FacesUtils;

@SuppressWarnings("serial")
public class ProfileController implements Serializable {

	private CompteService compteService;

	private CompteDto compte;
	
	private Compte profile;

	/**
	 * default empty constructor
	 */
	public ProfileController() {
	}

	/**
	 * Initialization method
	 */
	public void init() {
		if (SecurityContextHolder.getContext().getAuthentication() != null) {
			String username = SecurityContextHolder.getContext()
					.getAuthentication().getName();
			if (username != null) {
				compte = compteService.getCompteForEmail(username);
			}
			String form = "composeForm:";
			int profile_id = Integer.parseInt(FacesUtils.getRequestParameter(form + "profile_id"));
			profile = compteService.getCompteForId(profile_id);
		} else {

		}
	}

	public boolean isArtiste() {
		return CompteTypeEnum.ARTISTE.equals(compte.getType());
	}
	
	public boolean isGroupe() {
		return CompteTypeEnum.GROUPE.equals(compte.getType());
	}
	
	public boolean isParticulier() {
		return CompteTypeEnum.CLIENT_PARTICULIER.equals(compte.getType());
	}
	
	public boolean isProfessionnel() {
		return CompteTypeEnum.CLIENT_PROFESSIONNEL.equals(compte.getType());
	}

	public void setCompteService(CompteService compteService) {
		this.compteService = compteService;
	}

	public CompteDto getDto() {
		return compte;
	}

	public void setDto(CompteDto dto) {
		compte = dto;
	}
	
	@Transient
	public Compte getProfile(){
		return profile;
	}
	
	public void setProfile(Compte profile){
		this.profile = profile;
	}
}
